package com.example.demo.leetcode100题;

import com.example.demo.StopWatchTemplate;

/**
 * @author：zzc
 * @date: 2022/9/6
 */
public class 只出现一次的数字 {

    //给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均
    //出现两次。找出那个只出现了一次的元素。
    //说明：
    //你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗？
    //示例 1:
    //输入: [2,2,1]
    //输出: 1
    //示例 2:
    //输入: [4,1,2,1,2]
    //输出: 4

    public static void main(String[] args) {
        int[] nums = {1, 2, 2, 1, 4, 5, 5};
        System.out.println(StopWatchTemplate.doSupplier(() -> onlyOne(nums)));
    }

    private static Integer onlyOne(int[] nums) {
        int result = 0;
        for (int num : nums) {
            result = result ^ num;
        }
        return result;
    }
}
